// 给定一组数据, 知道木材的宽度,和高度, 然后需要往矿坑中放材料, 且不能超过地平面
// 思路是, 先找到对滴坑位, 然后最低坑位往右遍历, 记录最大连续, 看能放多少木材,
// 如果是连续的, 就算, 不连续, 就先结算之前的
const readline = require("readline");
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});
let w, n;
let initArr = [];

rl.on("line", (line) => {
    if (w === undefined) {
        w = Number(line.trim())
    } else if (n === undefined) {
        n = Number(line.trim())
    } else if (initArr.length === 0) {
        initArr = line.trim().split(",").map(Number)
        console.log(getResult(w, n, initArr))

        // clear
        w = n = undefined
        initArr.length = 0
    }
})
function getResult(w, n, initArr) {
    let ans = 0;
    let deep = Math.min(...initArr)
    while(deep < 0) {
        let length = 1;
        let preIndex = initArr.indexOf(deep)
        initArr[preIndex]++
        for (let i = preIndex + 1; i < initArr.length ; i++) {
            if(initArr[i] === deep) {
                initArr[i]++

                if(i - preIndex === 1) { // 连续
                    length++
                    if(i === initArr.length - 1) { // 到底
                        ans += Math.floor(length/w)
                        break
                    }

                }
                else { // 不连续
                    ans += Math.floor(length/w)
                    preIndex = i
                    length = 1
                    if(i === initArr.length - 1) { // 到底
                        ans += Math.floor(length/w)
                        break
                    }
                }
            } else { // 边坡(非最深处)
                ans += Math.floor(length/w)
                length = 0
                preIndex = -1
            }
        }
        deep = Math.min(...initArr)
    }
    return ans
}